package com.youlu.campus.entity;

import com.youlu.campus.base.base.EntityBase;
import com.youlu.campus.entity.enums.ShareType;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;

import java.util.Date;

/**
 * 用户邀请记录
 */
@Data
@Document(collection = "user_invite_record")
public class UserInviteRecord extends EntityBase {
    /**
     * 分享名称
     */
    private String shareName;
    /**
     * 活动ID
     */
    @Indexed
    private String activityId;
    /**
     * 任务ID
     */
    @Indexed
    private String taskId;
    /**
     * 邀请时间
     */
    private Date inviteTime;
    /**
     * 邀请人ID
     */
    @Indexed
    private String invitedByUserId;
    /**
     * 邀请人OpenId
     */
    @Indexed
    private String invitedByUserOpenId;
    /**
     * 邀请人名字
     */
    private String invitedByUserName;
    /**
     * 邀请人图片
     */
    private String invitedByUserImageUrl;
    /**
     * 受邀人ID
     */
    @Indexed
    private String invitedToUserId;

    /**
     * 受邀人OPENID
     */
    @Indexed
    private String invitedToUserOpenId;
    /**
     * 受邀人名字
     */
    private String invitedToUserName;
    /**
     * 受邀人图片
     */
    private String invitedToUserImageUrl;
    /**
     * 受邀人参与状态,默认未参与
     */
    @Indexed
    private Boolean joinStatus = Boolean.FALSE;
    /**
     * 受邀人参与时间
     */
    private Date joinTime;
    /**
     * 通知时间
     */
    private Date notifyTime;
    /**
     * 是否答题邀请
     */
    private Boolean qa = Boolean.FALSE;
    /**
     * 分享类型,QA:助力答题,DAKA:打卡,FISSION:裂变,REISSUE:补卡
     */
    private ShareType shareType = ShareType.FISSION;
    /**
     * 天的日期
     */
    private Date dayTime;

    @Transient
    private Integer inviteCount = 0;

    private String appId;

    private String platform;
    /**
     * 邀请人是否是分销者
     * true 分销者
     * false 不是
     */
    private Boolean inviterDistributor = Boolean.FALSE;
    /**
     * 额外字段
     */
    private String extra;

}
